package com.moonLight.weblog.common.domain.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.moonLight.weblog.common.domain.dos.TArticleCategoryRelDo;

import java.util.List;

public interface TArticleCategoryMapper  extends BaseMapper<TArticleCategoryRelDo> {


    /**
     * 根据文章 ID 删除关联记录
     * @param articleId
     * @return
     */
    default int deleteByArticleId(Long articleId) {
        return delete(Wrappers.<TArticleCategoryRelDo>lambdaQuery()
                .eq(TArticleCategoryRelDo::getArticleId, articleId));
    }

    /**
     * 根据文章 ID 查询文章的分类
     * @param articleId
     * @return
     */
    default TArticleCategoryRelDo selectByArticleId(Long articleId) {
        return selectOne(Wrappers.<TArticleCategoryRelDo>lambdaQuery()
                .eq(TArticleCategoryRelDo::getArticleId, articleId));
    }

    /**
     * 根据分类 ID 查询
     * @param categoryId
     * @return
     */
    default TArticleCategoryRelDo selectOneByCategoryId(Long categoryId) {
        return selectOne(Wrappers.<TArticleCategoryRelDo>lambdaQuery()
                .eq(TArticleCategoryRelDo::getCategoryId, categoryId)
                .last("LIMIT 1"));  // 只要存在一条数据 就可以证明不能删除
    }

    /**
     * 根据文章 ID 集合批量查询
     * @param articleIds
     * @return
     */
    default List<TArticleCategoryRelDo> selectByArticleIds(List<Long> articleIds) {
        return selectList(Wrappers.<TArticleCategoryRelDo>lambdaQuery()
                .in(TArticleCategoryRelDo::getArticleId, articleIds));
    }

    /**
     * 根据分类 ID 查询所有的关联记录
     * @param categoryId
     * @return
     */
    default List<TArticleCategoryRelDo> selectListByCategoryId(Long categoryId) {
        return selectList(Wrappers.<TArticleCategoryRelDo>lambdaQuery()
                .eq(TArticleCategoryRelDo::getCategoryId, categoryId));
    }
}
